/**
 * 							Timer Common Defination
 * @brief	Timer Common Definaton
 * @author	chy.
 * @note
 * @comment	this file defines macros and functions used by kernel, we'd batter make it has less thing with platform!
 */
#ifndef	_K_DRIV_TIMERCOMMON_H_
#define	_K_DRIV_TIMERCOMMON_H_

/**
 * COMMENTS:
 * 		In common, os will use one timer as task schedule timer.one is used as DMA timer.
 * 	one is used for applications!
 */

/**
 * @BRIEF	:	Initialize Timer System
 * @PARAM	:	void
 * @RETURN	:	void
 * @NOTE	:	The hard timer is different in different platform.But must make sure this will hold one hard timer!
 * 			:	The timer will start in this function.
 */
void k_driv_timer_init(void);

/**
 * @BRIEF	:	Initialize Task Schedule Timer
 * @PARAM	:	freq	timer frequence.
 * @RETURN	:	void
 * @NOTE	:	The hard timer is different in different platform.But must make sure this will hold one hard timer!
 * 			:	The timer will start in this function.
 */
void k_driv_timer_start_task_schedule_timer(unsigned int freq);

/**
 * @BRIEF	:	Initialize DMA Timer
 * @PARAM	:	freq	timer frequence.
 * @RETURN	:	void
 * @NOTE	:	The hard timer is different in different platform.But must make sure this will hold one hard timer!
 */
void k_driv_timer_start_dma_timer(unsigned int freq);

/**
 * @BRIEF	:	Initialize Application Timer
 * @PARAM	:	freq	timer frequence.
 * @RETURN	:	void
 * @NOTE	:	The hard timer is different in different platform.But must make sure this will hold one hard timer!
 * 			:	The timer will start in this function.
 */
void k_driv_timer_start_application_timer(unsigned int freq);

#endif	/* _K_DRIV_TIMERCOMMON_H_ */